package org.jeecg.modules.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.jeecg.modules.entity.DiyProfessorInfo;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @Description: 专家信息录入
 * @Author: Zhang Haoyu
 * @Date:   2020-05-21
 * @Version: V1.0
 */
public interface IDiyProfessorInfoService extends IService<DiyProfessorInfo>{

    /**
     * 根据id获取数据字典的名字
     * @param id
     * @return
     */
    String getDeclareCategoryName(String id);

    /**
     * 根据id获取用户userid
     * @param id
     * @return
     */
    String getDingDinguserid(String id);



    /**
     * 根据id查找专家电话
     * @param id
     * @author Zhang Haoyu
     * @return
     */
    String selPhone(@Param("id") String id);
    /**
     * 根据名称获取数据字典的id
     * @param name 名称
     * @return id
     */
    String getDeclareCategoryIdByName(String name);

    /**
     * 通过json对象储存专家信息
     * @param object
     */
    void saveByJsonObj(JSONObject object,String dingUserId);

    /**
     * 通过钉钉内部id更新专家的某一个信息
     * @param dingUserId
     * @param fieldName
     * @param filedValue
     * @return
     */
    int updateDiyProfessorOneField(String dingUserId, String fieldName, int filedValue);

    /**
     * 根据钉钉userid更新用户请假状态
     * @param userid
     * @param fieldName
     * @param fieldValue
     * @return
     */
    @Update("update diy_professor_info set ${fieldName}=#{fieldValue} where ding_user_id = #{userid}")
    int updateDiyProfessorOneField(@Param("userid") String userid, @Param("fieldName") String fieldName, @Param("fieldValue")String fieldValue);
    /**
     * 删除专家通过DingId
     * @param DingId 钉钉id
     * @return
     */
    Integer deleteProfessorByDingId(String DingId);


    /**
     * 删除专家通过unionId
     * @param unionId 钉钉id
     * @return
     */
    Integer deleteProfessorByUnionId(String unionId);

    /**
     * 根据userid查询专家信息
     * @param userid
     * @return
     */
    DiyProfessorInfo queryProfessorInfoByUserId(String userid);

    /**
     * 根据userid修改专家的状态为可修改个人信息
     * @param originator_userid
     */
    void updateChangeInfo(String originator_userid);

    /**
     * 导出专家申请表pdf
     * @param list
     * @return 判断是否成功的标志
     */
    String exportPDF(List<String> list);

    /**
     * 根据专业id获取专业名称
     * @param value
     * @return
     */
    String getMajorNameById(String value);

    /**
     * 自定义分页查询
     * @param page
     * @param diyProfessorInfo
     * @return
     */
    IPage<DiyProfessorInfo> pageByEntity(Page<DiyProfessorInfo> page, DiyProfessorInfo diyProfessorInfo);

}
